<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Title</title>
</head>
<body>

</body>
<script>
	// * 函数的返回值为promise对象
	// * promise对象的结果由`async`函数执行的返回值决定
	{
		// 1
		async function fn(){
		
		}
		// 2
		const fn2 = async function(){
		
		}
		// 3
		const fn3 = async ()=>{
		
		}
		// 4
		const obj = {
			fn4:async function(){
			
			},
			async fn5(){
			
			}
		}
		// 5
		setTimeout(async function(){
		
		})
	}
	{
		// 1- 函数返回的是一个非Promise实例，那么状态为成功，值为返回值
		// 2- 函数返回的是一个Promise实例，那么状态和值与返回的Promise实例相同
		// 3- 函数有异常，返回状态为失败，值为异常信息
		// const p = async function fn(){
		//
		// }
		// console.log(p());// 成功，undefined
		
		// const p = async function fn(){
		// 	return 1;
		// }
		// console.log(p());// 成功，1
		
		
		// const p = async function fn(){
		// 	return Promise.resolve(100);
		// }
		// console.log(p());// 成功，100
		
		
		// const p = async function fn(){
		// 	return Promise.reject(100);
		// }
		// console.log(p());// 失败，100
		
		// const p = async function fn(){
		// 	throw "异常";
		// }
		// console.log(p());// 失败，异常
		
		// 注意：返回的Promise实例是一个全新的
		const p = Promise.resolve(200);
		async function fn(){
			return p;
		}
		
		console.log(fn() === p);
	}
</script>
</html>